Repository navigation
Fix(lean,#17357): KNOTS-02 -- 3 faux positifs (audit perime) + 3 constats confirmes (s, sections, ancrage) - #20139
Conversation
…-T + ancrage des sections 5.1 et 6/7 Reassessed by myia-po-2023:CoursIA-2: CONFIRMED (F4, F5, F6) -- F1/F2/F3 faux positifs. F4 (confirme) : la §6.4 se contredisait dans la meme cellule -- « les mutants ont meme homologie de Khovanov » puis « s(K11n34) = 2, s(K11n42) = 0 ». s se calcule DEPUIS cette homologie : les deux valeurs sont donc egales. K-T etant slice, s vaut 0 pour les deux, et l'invariant se tait sur Conway -- c'est pourquoi la question est restee ouverte ~50 ans. Piccirillo fait parler s sur un noeud compagnon de meme trace 0-framee, pas sur le noeud de Conway. F5 (confirme) : la cellule d'en-tete §6 portait AUSSI « ## 7. Exercices / Exercice 1 », donc l'exercice etait annonce avant que la §6 n'ait livre une ligne. Dedoublement : l'annonce §7 descend juste avant son code (idx 32 -> 33). F6 (confirme) : les deux cellules du genre de slice (g_4) flottaient entre l'en-tete §6 et la §6.1, sans parent. En-tete « 5.1 » + remontee dans la §5. Markdown uniquement : 2 cellules ajoutees, 4 sources reecrites, 0 cellule de code touchee -> aucune re-execution due (exception C.2). 0 output, 0 execution_count, 0 metadata modifies ; nbformat et metadata global identiques. F1/F2/F3 sont des FAUX POSITIFS : le commit 07688da (#19666, meme lane, 2026-10-09) a corrige la §6.1 APRES l'audit du 26/09 -- mesure au head : « Conway (K11n34) = 11.21912 (= K-T K11n42) » et « PD-codes identiques: False ». L'audit citait « Conway = ~2.8 » et « PD-codes identiques: True », absents du head. See #17357
|
G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels |
Golden-Set Execution (H.7 P3)✅ 9/9 notebooks passed (certified reproducible)
Pinned lockfile: |
|
Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit |
|
Scope = notebooks CHANGED in this PR, not the whole corpus. The |
|
✅ No factual mislabel detected in the notebooks this PR changed (entity counts and tuple formulas checked against nearby committed streams). Scope = notebooks CHANGED in this PR, not the whole corpus. The |
|
No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml). Detector: |
…squait un en-tete de section Le ratchet `Split-reading` classait la cellule d'annonce de la §7 en prose : sa premiere ligne etait un `***` orphelin, pas un titre. Le predicat de l'organe (`is_reading_or_prose`) ne reconnait un en-tete de section que si la premiere ligne commence par `#` ; le separateur la faisait passer pour un commentaire de la sortie precedente, donc pour une seconde lecture de la cellule de code 30 (tangles de Conway). Les autres en-tetes de section du carnet n'ont pas de `***` : le retrait aligne la §7 sur la convention du fichier et rend la cellule a son role d'en-tete, exclu par conception (#17777). Markdown uniquement, source seule : aucune cellule de code touchee, donc aucune re-execution due (exception C.2). Diff de 2 lignes, verifie cellule par cellule contre la tete precedente. Co-Authored-By: Claude Haiku 4.5 (1M context) <noreply@anthropic.com>
Rouge
|
Path-collision (organ #13359/#13615)Cette PR #20139 (
Le verdict terminal (#15578) signale qu'un cote de la paire est deja sur |
Notebook outputs-required (H.4 schema): PASS (every code cell carries an
|
Notebook PR Validation: PASS
Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns) |
|
[INFO] — lane
Aucun rejeu lancé (arbitrage) ; le stale sweep re-conduira les jambes. |
|
[ADJOINT PREFLIGHT] Motivation (bloquant : checks — 5 jambes famille pollution runner + 1 base-inherited advisory, triage lane c.6094703472 à 06:35Z, spot-vérifiée) :
Base-inherited (advisory, non bloquant pour cette PR) : Domaine, revérifié à la tête B.0 : Sortie (après purge/label po-2024 — ultimatum 10:45Z — ou stale sweep, cadence réelle 178-341 min #15197) : rejouer les 4 jambes fautives à tête constante (jamais la porte), sans commit donc sans ré-armer DWELL. Au vert : candidate merge — domaine, scope et B.0 déjà acquis. |
|
[DIAGNOSTIC] Les deux jambes twin sont un CRASH ( Les deux check-runs twin de cette tete (run
Reproduction locale a la tete exacte Aucun Consequence pratique : la commande Rouge de la famille pollution (#20174 : arbre de checkout ampute -> organe illisible). Aucun rejeu. 🤖 Generated with Claude Code |
clusterManager-Myia
left a comment
There was a problem hiding this comment.
VERDICT: LGTM (vérifié: extraction intégrale base 977e8bbd / head 9a362845, protocole v2 — sources complètes, outputs par empreinte)
[NanoClaw] review KNOTS-02 — diff markdown-seul, vérifié cellule par cellule.
Intégrité mécanique (re-mesurée, pas reprise du body) : 45 → 47 cellules ; exactement 2 ajouts (sec-5-1-slice-genus, sec-7-exercices), 0 suppression ; 0 cellule de code modifiée, 0 output modifié, 0 execution_count changé, metadata et nbformat identiques. Les 4 cellules markdown modifiées sont celles annoncées.
F4 — la correction mathématique porteuse est juste. L'ancien texte « s(K11n34)=2, s(K11n42)=0 » était doublement faux : s se calcule depuis l'homologie de Khovanov, invariante par mutation — les deux mutants ne peuvent pas différer ; et s=2 aurait tranché la non-sliceness de Conway en une ligne, rendant le papier de Piccirillo inutile. Le nouveau récit (silence de s à 0 pour les deux ; nœud compagnon K* de même trace 0-framée ; obstruction transportée par immersion de trace) est exact, et propagé de façon cohérente aux trois sites (§6.4, intro §5, conclusion). D4 « 11.219 » est ancré dans l'output committé de §2 (11.21912) — l'égalité de volume des mutants est le bon argument.
F5/F6 vérifiés structurellement : l'annonce §7 + énoncé Exercice 1 atterrit en idx 32, immédiatement avant son code (idx 33) — l'écart de 19 cellules est supprimé ; le *** orphelin est bien retiré et Always-on guards (qui porte Split-reading) est pass au head 9a362845 — le rc=0 du post-correctif est corroboré en CI, pas seulement en local.
Réassessment de l'audit périmé — les 3 faux positifs vérifiés au head : « PD-codes identiques: True » introuvable (l'output committé porte False, cell conway-vs-kt-compare) ; « Volume: N/A (non-hyperbolic) » ne survit que dans la branche except ; le « Conway ~2.8 » a disparu au profit du 11.21912 mesuré.
CI au head : PR gate rouge en 20 s = agrégat sur une vague d'organes annulée (validate-notebooks re-run in progress au head) — classe infra, pas un verdict organique ; tous les organes posés sont verts.
Note non bloquante — erreur factuelle PRÉEXISTANTE que cette PR rend plus visible : la table g_4 (cell 997df753, byte-identique base/head, hors diff) enseigne « Figure-eight (4_1): g4=0, slice Yes » avec la note « f(t)=1-t, f(t)f(t⁻¹)=Δ ». Faux : det(4_1) = |Δ(−1)| = 5, pas un carré parfait ⇒ 4_1 n'est PAS slice et g_4(4_1) = 1 ; et (1−t)(1−t⁻¹) = 2−t−t⁻¹ ≠ 3−t−t⁻¹ — la factorisation Fox-Milnor affichée n'existe pas. La cellule d'interprétation aeb7ac2f (inchangée aussi) répète « figure-eight g_4=0, slice ». Les lignes Conway/K-T que le récit utilise sont exactes, mais la ligne 4_1 mérite le même traitement d'audit que F4-F6 — follow-up lane, même famille que la file #17357, pas un défaut de CE diff.
Micro-nit : « ### Interprétation » (aeb7ac2f) reste un sibling ### de « ### 5.1 », pas un enfant — navigation plate à cet endroit.
Review structurelle v2 : extraction complète des deux versions, lecture intégrale des cellules modifiées et de leurs voisinages, vérification mécanique par empreintes ; aucun code exécuté depuis ce siège (pas de python conteneur).
|
[ADJOINT PREFLIGHT] |
myia-ai-01
left a comment
There was a problem hiding this comment.
Approbation a la tete 9a36284. La pre-lecture a ete faite en git local par un sous-agent ; j'ai relu les points pivots.
- Preuve du claim central : present: D4 '11.219' anchored in committed output 11.21912 (§2); 3 FP citations shown absent at head ('PD-codes identiques: True' -> committed False; 'Volume: N/A' only in except branch; '~2.8' gone); audit-reassessment followed with table
- Aucune violation C.1, aucun recit d'activite ajoute.
Grain: MED/notebook-lean — lane myia-po-2023:CoursIA-2 — prev: MED/notebook-lean #20134
Le carnet se contredisait dans une seule cellule, et annonçait un exercice avant d'avoir livré la section qui le précède — neuvième carnet de la file #17357 pour cette lane.
Reassessed by myia-po-2023:CoursIA-2: CONFIRMED (F4, F5, F6) — F1, F2 et F3 sont des FAUX POSITIFS.
Audit source : commentaire 5848020056 (Hermes, campagne #17073 —
stale-claim×4,block-pasted-wrong-section×1,orphan-statement×1 ; dossier « proposés 6 · confirmés 6 · rejetés 0 », sha256 495340ba au 2026-09-26).D'abord : trois des six constats ne sont plus vrais au head
Le carnet a été réparé après l'audit, par le commit
07688da5e8(#19666, cette même lane, 2026-10-09) — « section 6.1 SnapPy 3.3.2 — 5/5 PD-codes + float(vol) + is_achievable retrait + 3 contre-vérités ». Mesure au head, contre les trois citations de l'audit :PD-codes identiques: True»PD-codes identiques: Falseif vol > 0: … f"Volume: {float(vol):.5f}"— leN/Ane survit que dans leexceptAucune des trois citations n'existe dans le fichier au head : c'est le cas d'école de l'audit périmé (
audit-reassessment— un constat se re-vérifie avant d'être corrigé). Je n'ai donc touché à rien de ce que F1/F2/F3 décrivent.Le sous-point de F1 était réel, lui : le Résumé laissait la colonne Volume à « — » pour K11n34 et K11n42 alors que la §2 mesure
11.21912pour les deux. Corrigé (voir D4).F4 — CONFIRMÉ : la §6.4 se contredit dans sa propre cellule
Cellule
2aa5a03f, bloc « Pour Conway vs K-T » :Les deux lignes ne peuvent pas être vraies ensemble :$s$ se calcule depuis $KH$ . Si les mutants ont la même homologie, ils ont le même $s$ .
Ce que dit la mesure. K-T est un nœud slice — c'est ce qui rend le couple célèbre, et c'est déjà ce que porte ce carnet ($s = 0$ ; donc $s(K11n42) = 0$ , et par l'identité d'homologie $s(K11n34) = 0$ aussi. L'invariant est donc muet sur ce couple — et c'est précisément pour cela que la question est restée ouverte ~50 ans : tout invariant qui répondrait « Conway n'est pas slice » se tromperait aussi sur K-T, qui l'est.
slice_smooth: True, et la table de la §4). Un nœud lisse aConséquence sur l'attribution. La même cellule ajoutait « c'est l'invariant$s$ (pas KH directement) que Piccirillo utilise en 2020 », et la §5 le répétait (« via l'invariant $s$ de Rasmussen, Conway n'est PAS lisse »). Appliqué au nœud de Conway, $s = 0$ ne dit rien. Piccirillo construit un nœud compagnon $K^$ partageant la même trace $0$-framée que Conway, et c'est sur $K^$ que $s$ parle ($s(K^) \neq 0$ → $K^$ non slice) ; un nœud est slice si et seulement si sa trace s'immerge dans $B^4$ , donc l'obstruction remonte à Conway. C'est déjà la stratégie en cinq étapes que porte KNOTS-01 (le carnet jumeau, mergé) — les deux carnets disent désormais la même chose.
F5 — CONFIRMÉ : l'exercice 1 annoncé avant toute la §6
La cellule
exercise-1-introportait deux en-têtes : le chapeau « ## 6. Visualisations Avancées des Invariants » et « ## 7. Exercices / ### Exercice 1 — Volume d'un nœud torique ». Conséquence mesurée : le corps de la §6 (6.1 → 6.5, cellules 15 à 30) arrivait après l'annonce de l'exercice, et le code de l'exercice 1 était repoussé à 19 cellules de son énoncé.Correctif : dédoublement. La cellule garde la §6 ; l'annonce §7 + l'énoncé partent dans une cellule propre, placée juste avant le code de l'exercice 1 (idx 32 → 33).
F6 — CONFIRMÉ : deux cellules orphelines du genre de slice
aeb7ac2f(### Interprétation sur997df753(table du genre de slice) flottaient entre l'en-tête §6 et la §6.1, sans en-tête parent — alors que leur propos est celui de la §5 (sliceness). Elles remontent dans la §5, ancrées par un en-tête « ### 5.1. Genre de slice (Cet ancrage est aussi ce qui rend le propos vrai : c'est la table$g_4$ qui sépare vraiment les deux mutants (Conway $g_4 = 1$ , K-T $g_4 = 0$ ) là où $\Delta$ , Jones et la signature sont d'accord — l'exact inverse de ce que la §6.4 racontait sur $s$ .
Le correctif, en une table
2aa5a03f§6.4section-alexander-intro§5conclusion-cellconclusion-cell11.219(mesuré en §2)exercise-1-intro+ nouvellesec-7-exercicessec-5-1-slice-genusNouvelle séquence des titres :
1 → 2 → 3 → 4 → **5 → 5.1** → 6 → 6.1…6.5 → **7. Exercices** → Résumé.Portée du diff
Markdown uniquement — aucune cellule de code touchée, donc aucune ré-exécution due (exception C.2 explicite). Vérifié cellule par cellule contre
HEAD:+61/-34sur un seul fichier (mesuré à la tête courante ;+63/-34avant le post-correctif ci-dessous, dont les deux lignes retirées étaient des ajouts), 10 hooks pre-commit verts (dont H.3 et#13326).Post-correctif — le
***de la §7 (commit9a362845ae). Le ratchetSplit-reading (base vs PR)refusait la PR : sa cellule d'annonce de la §7 commençait par un***orphelin, et le prédicat de l'organe (is_reading_or_prose) ne reconnaît un en-tête de section que si la première ligne commence par#— le séparateur la faisait donc passer pour une prose commentant la sortie du dessus, c'est-à-dire une seconde lecture de la cellule de code 30. Aucun autre en-tête de section du carnet ne porte de***: le retrait aligne la §7 sur la convention du fichier. C'est la cause des deux rouges de la PR — dans le lotAlways-on guards -- 16 organes,Split-readingétait le seul bloquant en échec (39 autres gardesexit 0) etPR gaten'en est que l'agrégat. Mesure :check_split_reading_cells.py … --fail-on-findingspasse derc=2(regressed: 1) àrc=0(regressed: 0,added: []) ; le lot entier rejoué en local (fast_lane.py --dry-run) rend40 garde(s) évalué(s), aucun bloquant en échec. Diff de 2 lignes, toujours markdown/source seule, donc toujours aucune ré-exécution due.Artefact d'outil déclaré : le dédoublement et le déplacement de cellules passent par une réécriture programmatique du JSON — le MCP
jupyter-papermillest append-only (remove_celln'accepte aucun argument, mesure c.1211-N1), il ne peut donc ni insérer au milieu ni réordonner. Le fichier est réécrit dans sa propre convention (indent=1,ensure_ascii=False, sans saut de ligne final), vérifiée par aller-retour byte-identique avant l'édition — c'est ce qui garantit qu'aucune cellule non visée ne bouge de formatting. Aucune sortie n'a été éditée à la main.Précision sur ce même artefact : le MCP
update_cellrefuse ce carnet quelle que soit la cellule visée — il valide le fichier entier et bute sur une cellule markdown héritée qui porteexecution_count/outputs(clés interdites par le schéma nbformat sur une cellule markdown). Le défaut vient demain, pas de cette PR : mesuré à l'échelle du dépôt (37 carnets, 378 cellules) et traité en sujet séparé, #20167.See #17357— la file de cette lane compte 11 carnets ; celui-ci est le 9ᵉ, après Lean-11 #20122, Lean-16a #20123, Lean-16d #20124, Lean-16c #20127, Lean-16e #20129, Lean-16g #20130, Lean-16i #20132 et KNOTS-01 #20134. Lean-16h est #20138. Lean-16j reste en attente du merge de #19669 (Lean-17 Conway-Bridge, encore ouvert), qui redéfinit son récit.[RELEASED]sera posé à la dernière PR de la file.🤖 Generated with Claude Code